#include <stdio.h>

// w位控制
unsigned int S = 0u;
unsigned int S1 = 1u << 2; // 控制位在一个4字节地址的第3位
unsigned int S2 = 1u << 3; // 控制位在一个4字节地址的第4位

// 位段控制
struct DATA_BIT {

    unsigned int a : 1;// 第一位
    unsigned int b : 1;// 第二位
    unsigned int c : 4;// 第3-4-5-6位
    unsigned int trailinf : 26;
};

void printf_bin(unsigned int n);

int main(){

    FILE *fp = fopen("s.txt", "r");

    char f_buf[1024];
    // if( fp ){
    //     while(fgets(f_buf, 1024, fp)){
    //         printf("%s", f_buf);
    //     }
    // }

    struct DATA_BIT data_bit;
    // 初始化
    data_bit.a = 1;
    data_bit.b = 0;
    data_bit.c = 15;

    printf("%d\n", 4 & 5);
    printf_bin(*(int *)&data_bit);

    // fscanf(fp, "%s", data);

    printf("\n");
    S = S1 | S2;
    printf_bin(S);

    return 0;
}

// 打印二进制串
void printf_bin(unsigned int n){

    printf("%d", n);
    unsigned int mask = 1 << 31;
    while (mask)
    {
        printf("%d", (mask & n) > 0);
        mask = mask >> 1;
    }

}
